package com.wwj.tem.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author: wwj
 * @create: 2024/7/24 - 21:51
 * Description: 全局跨域配置
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {
	
	// 假设我们只允许来自 https://example.com 和 https://subdomain.example.com 的跨域请求
//	String[] allowedOrigins = {"https://example.com", "https://subdomain.example.com"};
	String[] allowedOrigins = {"*"};
	
	// 明确列出允许的HTTP方法
	String[] allowedMethods = {"GET", "POST", "PUT", "DELETE", "OPTIONS"};
	
	// 明确列出允许的HTTP头部，这里使用"*"作为示例，实际应用中应根据需要调整
	String[] allowedHeaders = {"*"};
	
	// 明确列出暴露的头部，这里同样使用"*"作为示例
	String[] exposedHeaders = {"*"};
	
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		// 覆盖所有请求
		registry.addMapping("/**")
				// 允许发送 Cookie
				.allowCredentials(true)
				// 放行哪些域名（必须用 patterns，否则 * 会和 allowCredentials 冲突）
				.allowedOriginPatterns(allowedOrigins)
				.allowedMethods(allowedMethods)
				.allowedHeaders(allowedHeaders)
				.exposedHeaders(exposedHeaders);
	}
}
